﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Public;
using BLL;

namespace QLNhanKhau
{
    public partial class UCKhaiTu : UserControl
    {
        public UCKhaiTu()
        {
            InitializeComponent();
        }
        private void btnTim_Click(object sender, EventArgs e)
        {
            if (txtSoSHK.Text == "")
            {
                MessageBox.Show("Nhập số sổ hộ khẩu cần tìm", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtSoSHK.Focus();
                return;
            }
            int SoSHK = int.Parse(txtSoSHK.Text);
            SoHoKhauPublic shk = SoHoKhauBLL.LoadSoHoKhauBySoSHK(SoSHK);
            if (shk == null)
            {
                txtDuong.Text = txtAp.Text = txtSoNha.Text = txtChuHo.Text = "";
                dgvNhanKhau.DataSource =null;
                groupBox1.Enabled = false;
                grbThongTinKhaiTu.Enabled = false;
                MessageBox.Show("Không tìm thấy!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                txtSoSHK.ResetText();
                txtSoSHK.Focus();
                txtHoTen.ResetText();
                dateNgaySinh.ResetValue();
                txtDanToc.ResetText();
                txtQueQuan.ResetText();
                txtQuocTich.ResetText();
                txtNoiSinh.ResetText();
                txtNgheNghiep.ResetText();
                txtTrinhDo.ResetText();
                txtCMND.ResetText();
                txtTenGoiKhac.ResetText();
                UCKhaiTu_Load(sender, e);
                return;
            }
            else
            {
                if (shk.NgayXoa != null)
                {
                    groupBox1.Enabled = false;
                    groupBox2.Enabled = false;
                    btnThem.Enabled = false;
                }
                else
                    btnThem.Enabled = true;
                List<NhanKhauPublic> list_nk = NhanKhauBLL.LoadNhanKhauByMaSHK(shk.MaSHK);
                //groupBox1.Enabled = true;
                grbThongTinKhaiTu.Enabled = true;
                txtChuHo.Text = list_nk.Find(item => item.MaQH == 1).HoTen;
                //txtChuHo.Text = list_nk.Where(item => item.QuanHe == "Chủ hộ").FirstOrDefault().HoTen;

                dgvNhanKhau.DataSource = list_nk;
                //dgvNhanKhau.Columns[0].HeaderText = "Mã nhân khẩu";
                dgvNhanKhau.Columns[1].HeaderText = "Họ và tên";
                //dgvNhanKhau.Columns[2].HeaderText = "Mã khai sinh";
                //dgvNhanKhau.Columns[3].HeaderText = "Tên gọi khác";
                dgvNhanKhau.Columns[4].HeaderText = "CMND";
                dgvNhanKhau.Columns[5].HeaderText = "Ngày sinh";
                //dgvNhanKhau.Columns[6].HeaderText = "Nơi sinh";
                dgvNhanKhau.Columns[7].HeaderText = "Giới tính";
                dgvNhanKhau.Columns[8].HeaderText = "Quê quán";
                dgvNhanKhau.Columns[9].HeaderText = "Dân tộc";
                dgvNhanKhau.Columns[10].HeaderText = "Nghề nghiệp";
                dgvNhanKhau.Columns[11].HeaderText = "Quốc tịch";
                //dgvNhanKhau.Columns[12].HeaderText = "Chứng tử";
                dgvNhanKhau.Columns[13].HeaderText = "Tôn giáo";
                dgvNhanKhau.Columns[14].HeaderText = "Trình độ";
                //dgvNhanKhau.Columns[15].HeaderText = "Sổ hộ khẩu";
                dgvNhanKhau.Columns[16].HeaderText = "Quan hệ";
                dgvNhanKhau.Columns[0].Visible = false;
                //dgvNhanKhau.Columns[1].Visible = false;
                dgvNhanKhau.Columns[2].Visible = false;
                dgvNhanKhau.Columns[3].Visible = false;
                //dgvNhanKhau.Columns[4].Visible = false;
                //dgvNhanKhau.Columns[5].Visible = false;
                dgvNhanKhau.Columns[6].Visible = false;
                //dgvNhanKhau.Columns[7].Visible = false;
                //dgvNhanKhau.Columns[8].Visible = false;
                dgvNhanKhau.Columns[9].Visible = false;
                dgvNhanKhau.Columns[10].Visible = false;
                dgvNhanKhau.Columns[11].Visible = false;
                dgvNhanKhau.Columns[12].Visible = false;
                dgvNhanKhau.Columns[13].Visible = false;
                dgvNhanKhau.Columns[14].Visible = false;
                dgvNhanKhau.Columns[15].Visible = false;
                //dgvNhanKhau.Columns[16].Visible = false;
                dgvNhanKhau.Columns[17].Visible = false;
                dgvNhanKhau.Columns[18].Visible = false;
                dgvNhanKhau.Columns[19].Visible = false;
                dgvNhanKhau.Columns[20].Visible = false;
                dgvNhanKhau.Columns[21].Visible = false;

                txtDuong.Text = shk.Duong;
                txtAp.Text = shk.KhuPho.ToString();
                txtSoNha.Text = shk.SoNha;
                txtNoiOCuoiCung.Text = txtSoNha.Text + ", " + txtDuong.Text + ",KP/Ấp " + txtAp.Text + ThietLapBLL.LoadDiaChi() ;

            }
            DataGridViewCellStyle style = new DataGridViewCellStyle();
            style.ForeColor = Color.AliceBlue;
            style.BackColor = Color.Red;
            for (int i = dgvNhanKhau.RowCount - 1; i >= 0; i--)
            {
                if ((byte)dgvNhanKhau.Rows[i].Cells[21].Value != 0)
                {
                    //MessageBox.Show("geg");
                    dgvNhanKhau.Rows[i].DefaultCellStyle = style;
                }
                //if ((bool)dgvNguoiDung.Rows[i].Cells[5].Value==true)
                //{
                //  dgvNguoiDung.Rows[i].DefaultCellStyle = style;
                //}

            }
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            
        }
        int _MaNK;
        private void btnThem_Click(object sender, EventArgs e)
        {
            if (grbThongTinKhaiTu.Enabled == false)
            {
                MessageBox.Show("Người này đã được khai tử", "Thông báo nhập liệu", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            if (txtSoChungTu.Text == "" || txtSoBaoTu.Text == "" || txtNoiCapBaoTu.Text == "" || txtNguoiDangki.Text == "" || txtLyDoChet.Text == "" ||
                txtNoiChet.Text == "" || txtNoiOCuoiCung.Text == "" || txtNoiCapChungTu.Text == "")
            {
                MessageBox.Show("Vui lòng nhập đầy đủ thông tin", "Thông báo nhập liệu", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            if (dateNgayChet.Value > DateTime.Now || dateNgayChet.Value > dateNgayCapBaoTu.Value)
            {
                MessageBox.Show("Thời gian chết không hợp lệ", "Thông báo nhập liệu", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                dateNgayChet.Focus();
                return;
            }
            if (dateNgayCapBaoTu.Value < dateNgayChet.Value || dateNgayCapBaoTu.Value > DateTime.Now)
            {
                MessageBox.Show("Ngày cấp báo tử không hợp lệ", "Thông báo nhập liệu", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                dateNgayCapBaoTu.Focus();
                return;
            }
            if (dateNgayCapChungTu.Value > DateTime.Now || dateNgayCapChungTu.Value < dateNgayChet.Value)
            {
                MessageBox.Show("Ngày cấp chứng tử không hợp lệ", "Thông báo nhập liệu", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                dateNgayCapBaoTu.Focus();
                return;
            }
            KhaiTuPublic ct = new KhaiTuPublic();
            ct.MaKT = _MaNK;
            ct.SoChungTu = int.Parse(txtSoChungTu.Text);
            ct.NguoiDangKi = txtNguoiDangki.Text;
            //ct.NguoiCap = txtNguoiCap.Text;
            ct.CanBoHoTich = (int)cmbCanBoHoTich.SelectedValue;
            ct.NguoiCap = (int)cmbNguoiCapKT.SelectedValue;
            ct.ChucVu = NguoiDungBLL.LoadNguoiDungByMaND((int)cmbNguoiCapKT.SelectedValue).MaCV;
            //ct.ChucVu = txtChucVu.Text;
            ct.NgayCapBaoTu = dateNgayCapBaoTu.Value;
            //ct.NgayChet = DateTime.Parse(dateNgayChet.Text+nudGio.Value+nudPhut.Value);
            ct.NgayChet =dateNgayChet.Value.AddHours((double)nudGio.Value).AddMinutes((double)nudPhut.Value);
            ct.NoiCapBaoTu = txtNoiCapBaoTu.Text;
            ct.NgayCap = dateNgayCapChungTu.Value;
            ct.NoiCap = ThietLapBLL.LoadMaDiaChi();
            ct.NoiChet = txtNoiChet.Text;
            ct.LyDoChet = txtLyDoChet.Text;
            ct.NoiOCuoiCung = txtNoiOCuoiCung.Text;
            ct.SoBaoTu = int.Parse(txtSoBaoTu.Text);
            ct.NgayNhap = dateNgayNhap.Value;
            ct.NguoiNhan = (int)cmbNguoiNhan.SelectedValue;
            //ct.CanBoDangKi = (int)cmbCanBoDangKi.SelectedValue;
            ct.CanBoDangKi = frmDangNhap.user_login.MaND;
            ct.ChucVuNguoiNhan = NguoiDungBLL.LoadNguoiDungByMaND((int)cmbNguoiNhan.SelectedValue).MaCV;
            
            KhaiTuBLL.InsertKhaiTu(ct);

            NhanKhauBLL.UpdateKhaiTu(_MaNK,_MaNK);
            KhaiTuBLL.UpdateNgayXoa(_MaNK, dateNgayNhap.Value, 1);
            // dòng này hả?uhm

            MessageBox.Show("Thêm mới thành công", "Thông báo nhập liệu", MessageBoxButtons.OK, MessageBoxIcon.Information);
            //dgvNhanKhau.DataSource = NhanKhauBLL.LoadNhanKhauByMaSHK(NhanKhauBLL.LoadNhanKhauByMaNK(ct.MaKT).MaSHK);
            txtSoBaoTu.ResetText();
            txtNoiCapBaoTu.ResetText();
            txtSoChungTu.ResetText();
            txtLyDoChet.ResetText();
            txtNoiChet.ResetText();
            nudGio.Refresh();
            nudPhut.Refresh();
            dateNgayChet.ResetValue();
            dateNgayCapChungTu.ResetValue();
            txtNguoiDangki.ResetText();
            UCKhaiTu_Load(sender, e);
            btnTim_Click(sender, e);
           
        }

        private void dgvNhanKhau_SelectionChanged(object sender, EventArgs e)
        {
            DataGridViewCell cell = null;

            foreach (DataGridViewCell select in dgvNhanKhau.SelectedCells)
            {
                cell = select;
            }
            if (cell != null)
            {
                DataGridViewRow row = cell.OwningRow;
                
                txtHoTen.Text = (string)row.Cells[1].Value;
                txtCMND.Text = (string)row.Cells[4].Value;
                dateNgaySinh.Value = (DateTime)row.Cells[5].Value;
                if ((bool)row.Cells[7].Value == true)
                    rdtGioiTinhNam.Checked = true;
                else
                    rdtGioiTinhNu.Checked = true;
                txtQueQuan.Text = (string)row.Cells[8].Value;
                txtDanToc.Text = (DanTocBLL.LoadDanTocByMaDT((byte)row.Cells[9].Value).TenDanToc).ToString();
                txtTenGoiKhac.Text = row.Cells[3].Value.ToString();
                txtNgheNghiep.Text = (string)row.Cells[10].Value;
                txtQuocTich.Text = (QuocTichBLL.LoadQuocTichByMaQT((byte)row.Cells[11].Value).TenQuocTich).ToString();
                txtTonGiao.Text = (TonGiaoBLL.LoadTonGiaoByMaTG((byte)row.Cells[13].Value).TenTonGiao).ToString();
                txtTrinhDo.Text = (TrinhDoBLL.GetTrinhDoByMaTD((byte)row.Cells[14].Value).TenTrinhDo).ToString();
                txtNoiSinh.Text = TinhBLL.LoadTinhByMaT((int)row.Cells[6].Value);

                _MaNK = (int)row.Cells[0].Value;

                //KhaiSinhPublic ks = KhaiSinhBLL.LoadKhaiSinhByMaKS((int)row.Cells[2].Value);
                //txtNoiSinh.Text = ks.NoiSinh;

                //kiểm tra đã chết 
                if ((byte)row.Cells[21].Value != 0)
                {
                    if (row.Cells[12].Value.ToString() != "0")
                    {
                        grbThongTinKhaiTu.Enabled = false;
                        labChet.Text = "Người nãy đã được khai tử";
                        KhaiTuPublic kt = KhaiTuBLL.LoadKhaiTuByMaKT((int)row.Cells[12].Value);
                        txtSoBaoTu.Text = kt.SoBaoTu.ToString();
                        txtSoChungTu.Text = kt.SoChungTu.ToString();
                        txtLyDoChet.Text = kt.LyDoChet;
                        txtNoiChet.Text = kt.NoiChet;
                        txtNoiCapBaoTu.Text = kt.NoiCapBaoTu;
                        txtNguoiDangki.Text = kt.NguoiDangKi;
                        txtNoiOCuoiCung.Text = kt.NoiOCuoiCung;
                        dateNgayCapBaoTu.Value = (DateTime)kt.NgayCapBaoTu;
                        dateNgayCapChungTu.Value = (DateTime)kt.NgayCap;
                        dateNgayNhap.Value = (DateTime)kt.NgayNhap;
                        //nudGio.Value = kt.NgayChet.ToString("hh");
                        txtNoiCapChungTu.Text = ThietLapBLL.LoadDiaChiByMaDiaChi(kt.NoiCap);
                        nudGio.Value = kt.NgayChet.Value.Hour;
                        nudPhut.Value = kt.NgayChet.Value.Minute;
                        dateNgayChet.Value = kt.NgayChet.Value.Date;
                        cmbCanBoDangKi.SelectedValue = kt.CanBoDangKi;
                        cmbNguoiNhan.SelectedValue = kt.NguoiNhan;
                    }
                    else
                    {
                        labChet.Text = "Đã xóa thường trú";
                        
                        nudGio.ResetText();
                        nudPhut.ResetText();
                        dateNgayChet.ResetValue();
                        grbThongTinKhaiTu.Enabled = false;
                        txtSoBaoTu.ResetText();
                        txtSoChungTu.ResetText();
                        txtLyDoChet.ResetText();
                        txtNoiChet.ResetText();
                        txtNoiCapBaoTu.ResetText();
                        txtNguoiDangki.ResetText();
                        dateNgayCapBaoTu.ResetValue();
                        dateNgayNhap.Text = "";
                        txtNoiCapChungTu.Refresh();
                        cmbCanBoHoTich.Text="";
                        cmbNguoiCapKT.Text="";
                        txtNoiOCuoiCung.Text = "";
                        cmbNguoiNhan.Text = "";
                        cmbCanBoDangKi.Text = "";
                        txtNoiCapChungTu.Text = "";
                    }
                }
                else
                {
                    labChet.ResetText();
                    nudGio.ResetText();
                    nudPhut.ResetText();
                    dateNgayChet.ResetValue();
                    grbThongTinKhaiTu.Enabled = true;
                    txtSoBaoTu.ResetText();
                    txtSoChungTu.ResetText();
                    txtLyDoChet.ResetText();
                    txtNoiChet.ResetText();
                    txtNoiCapBaoTu.ResetText();
                    txtNguoiDangki.ResetText();
                    dateNgayCapBaoTu.ResetValue();
                    dateNgayNhap.Value=DateTime.Now;
                    txtNoiCapChungTu.Refresh();
                    cmbCanBoHoTich.Refresh();
                    cmbNguoiCapKT.Refresh();
                    txtNoiOCuoiCung.Text = txtSoNha.Text + ", " + txtDuong.Text + ",KP/Ấp " + txtAp.Text + ", " + ThietLapBLL.LoadDiaChi(); ;
                    cmbNguoiNhan.Refresh();
                    cmbCanBoDangKi.Text = frmDangNhap.user_login.HoTen.ToString();
                    txtNoiCapChungTu.Text = ThietLapBLL.LoadDiaChi();
                }
                // ví dụ muốn lấy tất cả thông tin của nhân khẩu với mank =  row.Cells[2].Value.ToString()
                // thực hiện câu truy vấn với mank, rồi đổ dữ liệu từ câu truy vấn trả về vào các textbox.
                //Hiểu k. Vì cái lưới hiện thời k chưa đủ dữ liệu để hiển thị ra textbox
            }

        }

        private void txtSoChungTu_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar) || txtSoChungTu.Text.Length > 7 && !Char.IsControl(e.KeyChar))
            {
                e.Handled = true;
            }
        }

        private void txtNoiCapBaoTu_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (txtNoiCapBaoTu.Text.Length > 49)
            {
                e.Handled = true;
            }
        }

        private void txtNguoiDangki_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (txtNoiCapBaoTu.Text.Length > 49)
            {
                e.Handled = true;
            }
        }

        private void txtNoiChet_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (txtNoiCapBaoTu.Text.Length > 49)
            {
                e.Handled = true;
            }
        }

        private void txtNoiOCuoiCung_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (txtNoiCapBaoTu.Text.Length > 254)
            {
                e.Handled = true;
            }
        }

        private void txtNoiCapChungTu_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (txtNoiCapBaoTu.Text.Length > 49)
            {
                e.Handled = true;
            }
        }

        //private void txtChucVu_KeyPress(object sender, KeyPressEventArgs e)
        //{
        //    if (txtNoiCapBaoTu.Text.Length > 11)
        //    {
        //        e.Handled = true;
        //    }
        //}

        private void UCKhaiTu_Load(object sender, EventArgs e)
        {
            txtSoSHK.Text = "1000002";
            cmbNguoiNhan.DataSource = NguoiDungBLL.LoadNguoiCap();
            cmbNguoiNhan.DisplayMember = "HoTen";
            cmbNguoiNhan.ValueMember = "MaND";

            cmbCanBoDangKi.Text = frmDangNhap.user_login.HoTen.ToString();
            //load chuc vu
            NguoiDungPublic nd = NguoiDungBLL.LoadNguoiDungByMaND((int)cmbNguoiNhan.SelectedValue);
            //.Text = nd.ChucVu;
            txtChucVuNguoiNhan.Text = ChucVuBLL.LoadChucVuByMaCV(nd.MaCV).TenChucVu;
            txtChucVuNguoiNhan.Enabled = false;

            dateNgayNhap.Value = DateTime.Parse(DateTime.Now.ToString());

            cmbCanBoHoTich.DataSource = NguoiDungBLL.LoadCanBoHoTich();
            cmbCanBoHoTich.DisplayMember = "HoTen";
            cmbCanBoHoTich.ValueMember = "MaND";

            cmbNguoiCapKT.DataSource = NguoiDungBLL.LoadChuTich();
            cmbNguoiCapKT.DisplayMember = "HoTen";
            cmbNguoiCapKT.ValueMember = "MaND";
           
            txtChucVuKT.Text = ChucVuBLL.LoadChucVuByMaCV(NguoiDungBLL.LoadNguoiDungByMaND((int)cmbNguoiCapKT.SelectedValue).MaCV).TenChucVu;
            txtChucVuKT.Enabled = false;

            txtNoiCapChungTu.Text = ThietLapBLL.LoadDiaChi();
        }

        private void cmbNguoiNhan_SelectionChangeCommitted(object sender, EventArgs e)
        {
            NguoiDungPublic nd = NguoiDungBLL.LoadNguoiDungByMaND((int)cmbNguoiNhan.SelectedValue);
            //.Text = nd.ChucVu;
            txtChucVuNguoiNhan.Text = ChucVuBLL.LoadChucVuByMaCV(nd.MaCV).TenChucVu;
            txtChucVuNguoiNhan.Enabled = false;

        }

        private void txtSoSHK_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar) || txtSoSHK.Text.Length > 7 && !Char.IsControl(e.KeyChar)||e.KeyChar==13)
            {
                e.Handled = true;
            }
            if (e.KeyChar == 13)
                btnTim_Click(sender, e);
        }

        private void txtLyDoChet_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (txtLyDoChet.Text.Length > 49 && !Char.IsControl(e.KeyChar))
            {
                e.Handled = true;
            }
        }

        private void cmbNguoiCapKT_SelectionChangeCommitted(object sender, EventArgs e)
        {
            NguoiDungPublic nd = NguoiDungBLL.LoadNguoiDungByMaND((int)cmbNguoiNhan.SelectedValue);
            //.Text = nd.ChucVu;
            txtChucVuKT.Text = ChucVuBLL.LoadChucVuByMaCV(nd.MaCV).TenChucVu;
            txtChucVuKT.Enabled = false;
        }

        private void txtSoBaoTu_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar) || txtSoBaoTu.Text.Length > 7 && !Char.IsControl(e.KeyChar))
            {
                e.Handled = true;
            }
        }

        private void txtSoChungTu_Leave(object sender, EventArgs e)
        {
            if (KhaiTuBLL.TestSoChungTu(int.Parse(txtSoChungTu.Text)) != true)
            {
                this.balloonTip2.ShowBalloon(txtSoChungTu);
                this.balloonTip2.SetBalloonCaption(txtSoChungTu, "Thông báo");
                this.balloonTip2.SetBalloonText(txtSoChungTu, "Đã có Số chứng tử này trong hệ thống");
                txtSoChungTu.Focus();
            }
        }
    }
}
